// Copyright  2012 Petr TALLA. [petr.talla@gmail.com]
// This file is free software; you can redistribute it and/or modify it
// under the terms of the GNU Lesser General Public License
// as published by the Free Software Foundation; either
// version 2 of the License, or (at your option) any later version.
//
// This file is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY;  without even the implied warranty
// of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
// See the GNU Lesser General Public License for more details.
// [http://www.gnu.org/copyleft/lesser.html]
//=============================================================================
#pragma once

#include <TcObject.h>
#include <list>
#include <string>

class TcXobject;
class TcXdbIterator;

//=============================================================================
class TcXdb : public TcObject {
//=============================================================================
public:
//<CONSTRUCTION>
    TcXdb(const char* name);
//<ITEMS>
    void append(TcXobject* xobj);
    TcXdbIterator* iterator();
    const char* name() { return name_.c_str(); };

    void toCmds( std::string& r);

    static TcXdb* active() { return active_; };
    static void activeSet( TcXdb* active) { active_ = active; };
//=============================================================================
protected:
    std::list<TcXobject*> items_;
    std::string           name_;
    static TcXdb*         active_;
//<FRIENDS>
    friend class TcXdbIterator;
};

